/**
 * @ Author:Yoann Meclot. MSay2
 * @ Created on:2021-06-14 17:49:33
 * @ Modified on: 2021-06-14 19:08:12
 */
/**
 * Copyright (c) 2020-2021 MSay2 (Yoann Meclot) - @msay2/tspoet
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { Cloneable } from "../Cloneable.js";
import { Comparable } from "../Comparable.js";
import { Filterable } from "../Filterable.js";
export declare abstract class List<B> implements Cloneable<List<B>>
{
    public abstract add(value:B):void;
    
    public abstract addAt(index:number, value:B):void;
    
    public abstract addAll(...list:List<B>[]):void;
    
    public abstract get(index:number):B | null;
    
    public abstract set(index:number, value:B):void;
    
    public abstract indexOf(value:B):number;
    
    public abstract contains(value:B):boolean;
    
    public abstract containsInstanceOf(objectName:string, forAll:boolean):boolean;
    
    public abstract containsOnlyInstanceOf(objectName:string):boolean;
    
    public abstract remove(index:number):void;
    
    public abstract removeQuantity(start:number, count:number):void;
    
    public abstract entries():Iterable<List.Entry<B>>;
    
    public abstract join(separator?:string):string;
    
    public abstract clear():void;
    
    public abstract clearMemory():void;
    
    public abstract isEmpty():boolean;
    
    public abstract size():number;
    
    public abstract toArray():B[];
    
    public abstract toString():string;
    
    public abstract clone():List<B>;
    
    public abstract sort(comparable:Comparable<B>):void;
    
    public abstract filter(filter:Filterable<B>):List<B>;
}

interface IEntry<B>
{
    getValue():B;
    isLastData():boolean;
    isFirstData():boolean;
    index():number;
}

export declare namespace List
{
    type Entry<B> = IEntry<B>;
}

export { };
//# sourceMappingURL=List.d.ts.map